package com.jt.aop;

import com.fasterxml.jackson.databind.util.JSONPObject;
import com.jt.vo.SysResult;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

import javax.servlet.http.HttpServletRequest;

@RestControllerAdvice   //定义异常处理的通知   只拦截controller层抛出的异常，并返回JSON串
public class SystemExceptionAOP {

    /**
     * 如果跨域访问发生了异常，返回值结果就需要经过特殊格式封装才行
     * 如果是关于访问形式，全局异常处理  才可以正确的返回结果
     * 思路： 1.判断用户提交参数中是否有callback参数
     * @param e
     * @return
     */
    @ExceptionHandler(RuntimeException.class)
    public Object fail(Exception e, HttpServletRequest request){
        //1.获取用户的请求参数
        String callback = request.getParameter("callback");
        //2.判断参数是否有值
        if (StringUtils.isEmpty(callback)){
            //如果callback的值为空便不是跨域访问
            e.printStackTrace();
            return SysResult.fail();
        }else {
            e.printStackTrace();
            return new JSONPObject(callback,SysResult.fail());
        }
    }


}
